package com.mikasa.springboot.example.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

/**
 * @Author: zhangyu
 * @Date: 17/3/31.
 * @Description:
 */
@Component
@PropertySource(ignoreResourceNotFound=true,
value = "classpath:/config/system-sdk-${spring.profiles.active}.properties")
@ConfigurationProperties(prefix = "wxpay.service")
public class WeiXinPayConfiguration {

    //这个就是自己要保管好的私有Key了（切记只能放在自己的后台代码里，不能放在任何可能被看到源代码的客户端程序中）
    // 每次自己Post数据给API的时候都要用这个key来对所有字段进行签名，生成的签名会放在Sign这个字段，API收到Post数据的时候也会用同样的签名算法对Post过来的数据进行签名和验证
    // 收到API的返回的时候也要用这个key来对返回的数据算下签名，跟API的Sign数据进行比较，如果值不一致，有可能数据被第三方给篡改

    private String key;

    private String appSecret;

    //微信分配的公众号ID（开通公众号之后可以获取到）
    private String appID;

    //微信支付分配的商户号ID（开通公众号的微信支付功能之后可以获取到）
    private String mchID;

    //统一下单支付地址
    private String payUrl;

    //微信支付异步回调地址
    private String notifyUrl;

    //受理模式下给子商户分配的子商户号
    private String subMchID;

    //HTTPS证书的本地路径
    private String certLocalPath;

    //HTTPS证书密码，默认密码等于商户号MCHID
    private String certPassword;

    //web支付参数
    private String webKey;
    private String webAppSecret;
    private String webAppID;
    private String webMchID;

    public String getWebKey() {
        return webKey;
    }

    public void setWebKey(String webKey) {
        this.webKey = webKey;
    }

    public String getWebAppSecret() {
        return webAppSecret;
    }

    public void setWebAppSecret(String webAppSecret) {
        this.webAppSecret = webAppSecret;
    }

    public String getWebAppID() {
        return webAppID;
    }

    public void setWebAppID(String webAppID) {
        this.webAppID = webAppID;
    }

    public String getWebMchID() {
        return webMchID;
    }

    public void setWebMchID(String webMchID) {
        this.webMchID = webMchID;
    }

    //以下是几个API的路径：
    //1）被扫支付API
    public String PAY_API = "https://api.mch.weixin.qq.com/pay/micropay";

    //2）被扫支付查询API
    public String PAY_QUERY_API = "https://api.mch.weixin.qq.com/pay/orderquery";

    //3）退款API
    public String REFUND_API = "https://api.mch.weixin.qq.com/secapi/pay/refund";

    //4）退款查询API
    public String REFUND_QUERY_API = "https://api.mch.weixin.qq.com/pay/refundquery";

    //5）撤销API
    public String REVERSE_API = "https://api.mch.weixin.qq.com/secapi/pay/reverse";

    //6）下载对账单API
    public String DOWNLOAD_BILL_API = "https://api.mch.weixin.qq.com/pay/downloadbill";

    //7) 统计上报API
    public String REPORT_API = "https://api.mch.weixin.qq.com/payitil/report";

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getAppSecret() {
        return appSecret;
    }

    public void setAppSecret(String appSecret) {
        this.appSecret = appSecret;
    }

    public String getAppID() {
        return appID;
    }

    public void setAppID(String appID) {
        this.appID = appID;
    }

    public String getMchID() {
        return mchID;
    }

    public void setMchID(String mchID) {
        this.mchID = mchID;
    }

    public String getPayUrl() {
        return payUrl;
    }

    public void setPayUrl(String payUrl) {
        this.payUrl = payUrl;
    }

    public String getNotifyUrl() {
        return notifyUrl;
    }

    public void setNotifyUrl(String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }

    public String getSubMchID() {
        return subMchID;
    }

    public void setSubMchID(String subMchID) {
        this.subMchID = subMchID;
    }

    public String getCertLocalPath() {
        return certLocalPath;
    }

    public void setCertLocalPath(String certLocalPath) {
        this.certLocalPath = certLocalPath;
    }

    public String getCertPassword() {
        return certPassword;
    }

    public void setCertPassword(String certPassword) {
        this.certPassword = certPassword;
    }

    public String getPAY_API() {
        return PAY_API;
    }

    public void setPAY_API(String PAY_API) {
        this.PAY_API = PAY_API;
    }

    public String getPAY_QUERY_API() {
        return PAY_QUERY_API;
    }

    public void setPAY_QUERY_API(String PAY_QUERY_API) {
        this.PAY_QUERY_API = PAY_QUERY_API;
    }

    public String getREFUND_API() {
        return REFUND_API;
    }

    public void setREFUND_API(String REFUND_API) {
        this.REFUND_API = REFUND_API;
    }

    public String getREFUND_QUERY_API() {
        return REFUND_QUERY_API;
    }

    public void setREFUND_QUERY_API(String REFUND_QUERY_API) {
        this.REFUND_QUERY_API = REFUND_QUERY_API;
    }

    public String getREVERSE_API() {
        return REVERSE_API;
    }

    public void setREVERSE_API(String REVERSE_API) {
        this.REVERSE_API = REVERSE_API;
    }

    public String getDOWNLOAD_BILL_API() {
        return DOWNLOAD_BILL_API;
    }

    public void setDOWNLOAD_BILL_API(String DOWNLOAD_BILL_API) {
        this.DOWNLOAD_BILL_API = DOWNLOAD_BILL_API;
    }

    public String getREPORT_API() {
        return REPORT_API;
    }

    public void setREPORT_API(String REPORT_API) {
        this.REPORT_API = REPORT_API;
    }
}
